﻿#pragma once
#include "XyNetCompiler/Global.h"

namespace XyNet
{
	/// 解析后的错误
	struct Error
	{
		Error(const string& name, const string& brief);

		/// 错误名
		const string _name;
		/// 错误概要
		const string _brief;
		/// 错误代码字符串
		const string _codeString;	// 例如"FFFFFFFF"
	};

	/// 解析后的方法
	struct Method
	{
		Method(const string& name);

		/// 方法名
		const string _name;
		/// 标识符
		const string _id;
		/// 请求参数列表
		vector<pair<string, string>> _requestArguments;
		/// 应答参数列表
		vector<pair<string, string>> _responseArguments;
		/// 错误列表
		vector<Error> _errors;
	};

	/// 解析后的服务
	struct Service
	{
		Service(const string& name);

		/// 服务名
		const string _name;
		/// 标识符
		const string _id;
		/// 方法列表
		vector<Method> _methods;
	};

	/// 生成Id
	string makeId(const string& name);
}